The disclosure relates to the field of software development and, more particularly, to identifying source code elements for refactoring.
Large modern software development projects are often developed from complex designs. Often, a software development project can become very complex as the design evolves from the prototype stage to the ‘fully fledged’ commercialization of the software project. Thus, when developers write code based upon a complex design errors are inevitable. Often, the complexity of the design increases as the software moves from prototyping to commercialization because of additional functionality that is incorporated into the prototype, or oversights shortcomings in the design that become exposed to designers and developers over time. In order to overcome these problems a number of methodologies are deployed which encourage both the setting up of a build system for continuous building of the source code to ensure that the source code files can be built together, whilst also encouraging the use of refactoring cycles throughout the life cycle of the software project.
A large amount of information can be generated during the build process of a software project, but very often this information is only used for the current build of the source code. Build information can inform a developer that there is an error located at a specific line in a source code file. However, the information is at a very rudimentary level and does not provide information as to the exact cause of the error or other statistical information associated with the error. For example, when compiling a first source code file with a second source code file, the compiler detects an error in the first source code file—is the error caused by an error in the first source code file or due to a dependency on a method in a second source code file?